package com.example.shardingsphere.fegin;

import com.example.shardingsphere.entity.Roles;
import com.example.shardingsphere.entity.UserRoles;
import com.example.shardingsphere.fegin.fallback.ProductFeignClientFallback;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.List;

@FeignClient(value = "permission-service",fallback = ProductFeignClientFallback.class)  //FeignClient 默认是使用RestTemplate进行远程调用的  客户端
public interface ProductFeginClient {
    /**
     * 插入用户角色信息
     */
    @PostMapping("/api/userRole/insert")
    Integer insertUserRole(UserRoles userRoles);

    // 绑定默认角色（普通用户）
    @PostMapping("/api/bindDefaultRole/{userId}")
    Integer bindDefaultRole(@PathVariable("userId") Long userId);

    // 查询用户角色码（返回role_code）
    @PostMapping("/api/getRoleCode/{userId}")
    String getUserRoleCode(@PathVariable("userId") Long userId);

    // 超管调用：升级用户为管理员
    @GetMapping("/upgradeToAdmin")
    public void upgradeToAdmin(@RequestParam String userId);

    // 超管调用：降级用户为普通角色
    @GetMapping("/downgradeToUser")
    public void downgradeToUser(@RequestParam String userId);

    // 管理员调用：获取所有普通用户
    @GetMapping("/api/getNormalUserIds")
    List<Long> getNormalUserIds();




}
